SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE PROCEDURE [dbo].[paAsignarNroDeOrden] 

@IDConvocatoria INT,
@EsTituloEspecifico VARCHAR(1),
@TipodeReporte INT, --1 = Reporte por localidad, 2=General -  Reporte por Cargo (sin corte por localidad), 3 = Reporte para TTP
@localidadp int,
@idmodalidadp int,
@idnivelp int

AS
SET NOCOUNT ON
SET DATEFORMAT DMY
/*

DECLARE @Inscripcion INT
DECLARE @Agente INT
DECLARE @Localidad VARCHAR(100)
DECLARE @LocalidadT VARCHAR(100)
SET @LocalidadT = 'Nothing'
DECLARE @CargoGenerico VARCHAR(100)
DECLARE @CargoGenericoT VARCHAR(100)
SET @CargoGenericoT = 'Nothing'
DECLARE @AsignaturaGenerica VARCHAR(100)
DECLARE @AsignaturaGenericaT VARCHAR(100)
SET @AsignaturaGenericaT = 'Nothing'
DECLARE @CategoriaTitulo INT
DECLARE @Puntaje FLOAT
DECLARE @Promedio FLOAT
DECLARE @Especifico VARCHAR(1)
DECLARE @Counter INT
DECLARE @Nivel INT
DECLARE @NivelT INT
DECLARE @Modalidad INT
DECLARE @ModalidadT INT
DECLARE @Ciclo INT
DECLARE @CicloT INT
DECLARE @Convocatoria INT
DECLARE @ConvocatoriaT INT

DECLARE @tipoconvocatoria as int
--DECLARE @TitEspecifico VARCHAR(1)

SET @NivelT = 0
SET @modalidad=0
SET @modalidadT=0
SET @CicloT = 0
SET @ConvocatoriaT  = 0
SET @Counter = 0
DECLARE @error INT
SET @error = 0

DECLARE @SituacionRevista as int
DECLARE @tit as varchar (2)

declare @DescrLoc as varchar(200)

BEGIN TRANSACTION

--este update deberia hacerlo cuando selecciona la convocatoria para poner el orden de merito
--set @Convocatoria=28
--set @TitEspecifico='N'

--update tb_parametros set valor1=cast(@IDconvocatoria as varchar),valor2=@EsTituloEspecifico,Tipo2=@Tipodereporte   where idparametro=65

--set @Convocatoria=(select cast(valor1 as int) from tb_parametros where idparametro=65)
--set @Tit=(select cast(valor2 as varchar) from tb_parametros where idparametro=65)

set @tipoconvocatoria= (select tipoconvocatoria from tb_convocatorias where idconvocatoria=@idconvocatoria)
UPDATE tb_InscripcionesConvocatorias SET NroDeOrden = 0 WHERE convocatoria=@Idconvocatoria and nivel=@idnivelp and Modalidad=@idmodalidadp	--Blanqueo los nrodeorden anteriores

--set @tipoconvocatoria=1


IF (@TipodeReporte=4 ) --Llamado especial de EGB
BEGIN
		print 'Reporte de EGB Llamado Especial,  corte por localidad y por situación de revista..........................'

		DECLARE X CURSOR FORWARD_ONLY FOR
		SELECT * from vwOrdenDeMeritoSinOrden where convocatoria=@Idconvocatoria and nivel=@idnivelp and Modalidad=@idmodalidadp and  @localidadp=case when @localidadp =   174 then @localidadp else idlocalidad end 
		ORDER BY Convocatoria, Nivel,Modalidad, Ciclo, Localidad, CG, AG, isnull(situacionrevista,1) Desc,CategoriadeTitulo, Puntaje DESC, PromedioTitulo DESC
END



IF (@tipoconvocatoria=1 and @TipodeReporte=1) OR (@tipoconvocatoria=9 and @TipodeReporte=1) -- Ingreso Interinatos y Suplencias, O EL REPORTE DE Acumulacion y/o Acrecentamiento DE POLIMODAL
BEGIN
		print 'Reporte por  por localidad.....................................'

		DECLARE X CURSOR FORWARD_ONLY FOR
		SELECT * from vwOrdenDeMeritoSinOrden 
--		WHERE convocatoria=@Idconvocatoria and nivel=@idnivelp and Modalidad=case when @idmodalidadp=11 then @idmodalidadp else modalidad end and  @localidadp=case when @localidadp =   174 then @localidadp else idlocalidad end 
	WHERE convocatoria=@Idconvocatoria and nivel=@idnivelp and   @localidadp=case when @localidadp =   174 then @localidadp else idlocalidad end 
		ORDER BY Convocatoria, Nivel, Ciclo, Localidad, CG, AG,CategoriadeTitulo, Puntaje DESC, PromedioTitulo DESC

END

IF @tipoconvocatoria=1 and @TipodeReporte=3  -- Reporte de TTP , Ingreso Interinatos y Suplencias
BEGIN
		print 'Reporte de TTP ................'
		DECLARE X CURSOR FORWARD_ONLY FOR
		SELECT * from vwOrdenDeMeritoTTP
		WHERE convocatoria=@Idconvocatoria and nivel=@idnivelp and Modalidad=@idmodalidadp and  @localidadp=case when @localidadp =   174 then @localidadp else idlocalidad end 
		ORDER BY Convocatoria, Nivel,Modalidad, Ciclo, idLocalidad, CG, AG,CategoriadeTitulo, Puntaje DESC, PromedioTitulo DESC

END

IF (@tipoconvocatoria=2 )  --Ascensos y/o COORDINADOR DE EGB
BEGIN
		print 'Reporte de Ascensos, tiene corte por localidad y por situación de revista..........................'
		DECLARE X CURSOR FORWARD_ONLY FOR
		SELECT * FROM vwOrdenDeMeritoSinOrden
		WHERE convocatoria=@Idconvocatoria and nivel=@idnivelp and Modalidad=@idmodalidadp and  @localidadp=case when @localidadp =   174 then @localidadp else idlocalidad end 
		ORDER BY Convocatoria, Nivel,Modalidad, Ciclo, Localidad, CG, AG, isnull(situacionrevista,1),CategoriadeTitulo, Puntaje DESC, PromedioTitulo DESC
END

IF (@tipoconvocatoria=9  AND @TipodeReporte=2) or (@tipoconvocatoria=1 and @TipodeReporte=2) -- Acumulacion y/o Acrecentamiento  o los reportes de ingreso que no tienen corte por localidad 
BEGIN
		print 'Reporte General de Toda la provincia, sin corte por localidad.....................................'
--		DECLARE X CURSOR FORWARD_ONLY FOR
--		SELECT * FROM vwOrdenDeMeritoSinOrden 
--		ORDER BY Convocatoria, Nivel, Ciclo,CG, AG,CategoriadeTitulo, Puntaje DESC, PromedioTitulo DESC
		
		DECLARE X CURSOR FORWARD_ONLY FOR
		SELECT distinct  Convocatoria, Nivel, 5 as Modalidad,Ciclo, max(idInscripcionConvocatoria) as idInscripcionConvocatoria, Agente,CG, 
		               AG, CategoriaDeTitulo, Puntaje, PromedioTitulo, TituloEspecifico, SituacionRevista,  tit
			 FROM vwOrdenDeMeritoSinOrden
  			WHERE convocatoria=@Idconvocatoria and nivel=@idnivelp and Modalidad=@idmodalidadp 
		group by
			Convocatoria, Nivel,modalidad, Ciclo, Agente,CG, 
		               AG, CategoriaDeTitulo, Puntaje, PromedioTitulo, TituloEspecifico, SituacionRevista,tit
		ORDER BY Convocatoria, Nivel, Ciclo,CG, AG,CategoriadeTitulo, Puntaje DESC, PromedioTitulo DESC
END


IF @tipoconvocatoria=9  AND @TipodeReporte=3 -- Acumulacion para nivel inicial y EGB (Primaria)
BEGIN
		print 'Reporte para acumulacion primaria o inicial..............................'
		
		DECLARE X CURSOR FORWARD_ONLY FOR
		SELECT distinct Convocatoria, Nivel,Modalidad,Ciclo, Agente,--max(idInscripcionConvocatoria) as idInscripcionConvocatoria,
		CategoriaDeTitulo, Puntaje,  TituloEspecifico,tit 
		FROM vwOrdenDeMeritoSinOrden
		WHERE convocatoria=@Idconvocatoria and nivel=@idnivelp and Modalidad=@idmodalidadp 
--where nivel=2 and modalidad=5
group by
Convocatoria, Nivel,Modalidad, Ciclo, Agente, CategoriaDeTitulo, Puntaje, TituloEspecifico,tit
ORDER BY Convocatoria, Nivel,Modalidad, Ciclo,CategoriadeTitulo, Puntaje DESC--, PromedioTitulo DESC
END


IF @TipodeReporte=5
BEGIN
		print 'Reporte co Título Específico....................................'

		DECLARE X CURSOR FORWARD_ONLY FOR
		SELECT * FROM vwOrdenDeMeritoSinOrden
		WHERE convocatoria=@Idconvocatoria and nivel=@idnivelp and Modalidad=@idmodalidadp and  @localidadp=case when @localidadp =   174 then @localidadp else idlocalidad end  and @EsTituloEspecifico = 'S' and substring(cg,3,3)in ('685','659','660')
		ORDER BY Convocatoria, Nivel, Ciclo, Localidad, CG, AG,CategoriadeTitulo, Puntaje DESC, PromedioTitulo DESC

END


--SELECT * FROM vw_OrdenDeMeritoSinOrden
--ORDER BY Convocatoria, Nivel, Ciclo, Localidad, CG, AG, isnull(situacionrevista,1),CategoriadeTitulo, Puntaje DESC, Promedio DESC


OPEN X

IF (@tipoconvocatoria=9  AND @TipodeReporte=3) 
  
BEGIN

	FETCH NEXT FROM X INTO @Convocatoria, @Nivel, @Modalidad,@Ciclo,  @Agente,  @CategoriaTitulo, @Puntaje, @Especifico,@tit

	WHILE @@FETCH_STATUS = 0
                      BEGIN
		SELECT @ConvocatoriaT = @Convocatoria, @NivelT = @Nivel, @ModalidadT=@Modalidad,@CicloT = @Ciclo  
		WHILE @Convocatoria = @ConvocatoriaT AND @Nivel = @NivelT AND @Modalidad=@ModalidadT and @Ciclo = @CicloT  AND @@FETCH_STATUS = 0
                                    BEGIN
			SET @Counter = @Counter + 1
			print @Counter
                                                print @Convocatoria 
 			print  @Nivel 
			print @Modalidad
                                                print @Agente  print @Ciclo 
			UPDATE tb_InscripcionesConvocatorias SET NroDeOrden = @Counter WHERE Convocatoria=@Convocatoria and nivel=@Nivel and modalidad=@Modalidad and agente=@Agente 
			IF @@error <> 0 BEGIN
				SET @error = @@error
				GOTO Salir
		 	                                END

			FETCH NEXT FROM X INTO  @Convocatoria, @Nivel, @Modalidad,@Ciclo,  @Agente,  @CategoriaTitulo, @Puntaje, @Especifico,@tit

		END
		SET @Counter = 0

	END

END
ELSE
IF (@tipoconvocatoria=9  AND @TipodeReporte=2) or (@tipoconvocatoria=1 and @TipodeReporte=2) 
BEGIN                                                         
	FETCH NEXT FROM X INTO @Convocatoria, @Nivel, @Modalidad,@Ciclo, @Inscripcion, @Agente,  @CargoGenerico, @AsignaturaGenerica,  @CategoriaTitulo, @Puntaje, @Promedio, @Especifico,@SituacionRevista,@tit

	WHILE @@FETCH_STATUS = 0
                   BEGIN

		SELECT @ConvocatoriaT = @Convocatoria, @NivelT = @Nivel, @ModalidadT= @Modalidad,@CicloT = @Ciclo,  @CargoGenericoT = @CargoGenerico, @AsignaturaGenericaT = @AsignaturaGenerica 
	
		WHILE @Convocatoria = @ConvocatoriaT AND @Nivel = @NivelT AND @Ciclo = @CicloT AND  @CargoGenerico = @CargoGenericoT AND @AsignaturaGenerica = @AsignaturaGenericaT AND @@FETCH_STATUS = 0
                                      BEGIN
	
			SET @Counter = @Counter + 1
		            print  @Inscripcion
		            print @Counter
                                       print @Convocatoria 
 			print  @Nivel 
			print @Modalidad
                                        print @Agente 
			 print @Ciclo 	

--		UPDATE tb_InscripcionesConvocatorias SET NroDeOrden = @Counter, Puntaje = @Puntaje, CategoriadeTitulo = @CategoriaTitulo, PromedioTitulo=@Promedio, TituloEspecifico = @Especifico WHERE IdInscripcionConvocatoria = @Inscripcion
			UPDATE tb_InscripcionesConvocatorias SET NroDeOrden = @Counter WHERE  IdInscripcionConvocatoria = @Inscripcion
			IF @@error <> 0 BEGIN
				SET @error = @@error
				GOTO Salir
			                                 END

			FETCH NEXT FROM X INTO @Convocatoria, @Nivel, @Modalidad,@Ciclo, @Inscripcion, @Agente, @CargoGenerico, @AsignaturaGenerica,  @CategoriaTitulo, @Puntaje, @Promedio, @Especifico,@SituacionRevista,@tit

		END

		SET @Counter =0

	END

END


ELSE
BEGIN                                                         
	FETCH NEXT FROM X INTO @Convocatoria, @Nivel, @Modalidad,@Ciclo, @Inscripcion, @Agente, @Localidad, @CargoGenerico, @AsignaturaGenerica,  @CategoriaTitulo, @Puntaje, @Promedio, @Especifico,@SituacionRevista,@tit,@DescrLoc

	WHILE @@FETCH_STATUS = 0
                   BEGIN

		SELECT @ConvocatoriaT = @Convocatoria, @NivelT = @Nivel, @ModalidadT= @Modalidad,@CicloT = @Ciclo, @LocalidadT = @Localidad, @CargoGenericoT = @CargoGenerico, @AsignaturaGenericaT = @AsignaturaGenerica 
	
		WHILE @Convocatoria = @ConvocatoriaT AND @Nivel = @NivelT AND @Ciclo = @CicloT AND @Localidad = @LocalidadT AND @CargoGenerico = @CargoGenericoT AND @AsignaturaGenerica = @AsignaturaGenericaT AND @@FETCH_STATUS = 0
                                      BEGIN
	
			SET @Counter = @Counter + 1
		            print  @Inscripcion
		              print @Counter
                                                print @Convocatoria 
 			print  @Nivel 
			print @Modalidad
                                                print @Agente 
			 print @Ciclo 	

--		UPDATE tb_InscripcionesConvocatorias SET NroDeOrden = @Counter, Puntaje = @Puntaje, CategoriadeTitulo = @CategoriaTitulo, PromedioTitulo=@Promedio, TituloEspecifico = @Especifico WHERE IdInscripcionConvocatoria = @Inscripcion
			UPDATE tb_InscripcionesConvocatorias SET NroDeOrden = @Counter WHERE  IdInscripcionConvocatoria = @Inscripcion
			IF @@error <> 0 BEGIN
				SET @error = @@error
				GOTO Salir
			                                 END

			FETCH NEXT FROM X INTO @Convocatoria, @Nivel, @Modalidad,@Ciclo, @Inscripcion, @Agente, @Localidad, @CargoGenerico, @AsignaturaGenerica,  @CategoriaTitulo, @Puntaje, @Promedio, @Especifico,@SituacionRevista,@tit,@DescrLoc

		END
		SET @Counter = 0

	END
    END

CLOSE X
DEALLOCATE X

Salir:
IF @error <> 0 BEGIN
	ROLLBACK TRANSACTION
END
ELSE BEGIN
	COMMIT TRANSACTION
END

*/
GO
GRANT EXECUTE ON  [dbo].[paAsignarNroDeOrden] TO [Juntas]
GO
